﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using WebCAM;
using System.Data.SqlClient;
using System.IO;
using System.Drawing.Imaging;

namespace ControlDeAsistencia
{
    public partial class Ventana : Form
    {
        //string ruta = "Data Source=localhost;Initial Catalog=ControlAsistenciaEmpleado;Integrated Security=True"; // ruperto
        DataSet dsBase = new DataSet();
        DateTime hora = new DateTime();

        public Ventana()
        {
            InitializeComponent();
        }

        private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
		    obj_fecha_y_hora.Text = timer1.ToString ();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // consultas
            //string ConsultaSqlEmpleados = "SELECT * from Empleados"; 
            
            //web_cam.Start ();//modificaciones realizadas por diferencias en el nombre del objeto
            //web_cam.Start ();
            webCam1.Start();
            webCam1.Start();
            //consulta_base(ruta, ConsultaSqlEmpleados, "Empleados", ref dsBase); 
        }

        private void button1_Click(object sender, EventArgs e) //Si no completa el campo Nombre el texbox cambia a color rojo
        {
            if (txtDni.Text == "")
            {
                txtDni.BackColor = Color.Red;
                return;
            }
            //if (new Empleado(int.Parse(txtDni.Text)).Dni == null)
            if (!Empleado.existe(int.Parse(txtDni.Text))) // ta negado viteh :$
            {
                MessageBox.Show(" Dni Inexistente ", "ERROR", MessageBoxButtons.OK);
                return;
            }
            else
            {

                foto_resultado.Image = webCam1.Imagen;
                txtControlR.Text = "Entrada";
                txtFechaR.Text = DateTime.Now.ToString();
                hora = DateTime.Now;

                ////new Ingreso(int.Parse(txtDni.Text), DateTime.Now);
                //Ingreso objeto = new Ingreso(int.Parse(txtDni.Text), DateTime.Now);

                //if (!Directory.Exists(Path.Combine(Application.StartupPath, "Imagenes")))
                //    Directory.CreateDirectory(Path.Combine(Application.StartupPath, "Imagenes"));

                //string imagepath = Path.Combine(Application.StartupPath, "Imagenes\\" + objeto.Imageningreso);
                //foto_resultado.Image.Save(imagepath, System.Drawing.Imaging.ImageFormat.Jpeg);
                //objeto.insertarIngreso();
            }
        }

        private void button2_Click(object sender, EventArgs e) //Si no completa el campo Nombre el texbox cambia a color rojo
        {
            if (txtDni.Text == "")
            {
                txtDni.BackColor = Color.Red;
                return;
            }
            //if (new Empleado(int.Parse(txtDni.Text)).Dni == null)
            if (!Empleado.existe(int.Parse(txtDni.Text))) // ta negado viteh :$
                MessageBox.Show(" Dni Inexistente ", "ERROR", MessageBoxButtons.OK);

            else
            {
                foto_resultado.Image = webCam1.Imagen;
                txtControlR.Text = "Salida";
                txtFechaR.Text = DateTime.Now.ToString();
                hora = DateTime.Now;
            }
        }

        private void timer1_Elapsed_1(object sender, System.Timers.ElapsedEventArgs e)
        {
            obj_fecha_y_hora.Text = DateTime.Now.ToString();
        }

        private void txtDni_KeyPress(object sender, KeyPressEventArgs e) // Permite solo el ingreso de numeros
        {
            if ((e.KeyChar < 48 || e.KeyChar > 59) && e.KeyChar != 8)
                e.Handled = true;
        }

        public void consulta_base(string conexBase, string consulta, string nomtabla, ref DataSet dsBase) 
        {
            SqlConnection conexion = new SqlConnection(conexBase);
            SqlDataAdapter adaptador = new SqlDataAdapter(consulta, conexion);
            conexion.Open();
            adaptador.Fill(dsBase,nomtabla);
        }

        private void btnLimpiar_Click(object sender, EventArgs e) // Resetea todos los campos
        {
            txtDni.Text = "";
            txtDni.BackColor = Color.White;
            foto_resultado.Image = ControlDeAsistencia.Properties.Resources.Image;
            txtControlR.Text = "";
            txtFechaR.Text = "";
        }

        private void txtDni_TextChanged(object sender, EventArgs e)
        {
            txtDni.BackColor = System.Drawing.SystemColors.Control;
        }

        private void Ventana_FormClosed(object sender, FormClosedEventArgs e)
        {
            //webCam1.Stop();
        }

        private void btnEnviar_Click(object sender, EventArgs e)
        {
            if (txtDni.Text == "")
            {
                txtDni.BackColor = Color.Red;
                return;
            }
            if (!Empleado.existe(int.Parse(txtDni.Text))) // ta negado viteh :$
            {
                MessageBox.Show(" Dni Inexistente ", "ERROR", MessageBoxButtons.OK);
                return;
            }
            string dirImagenes = Path.Combine(Application.StartupPath, "Imagenes");
            Ingreso nuevoIngreso = new Ingreso(int.Parse(txtDni.Text), hora, dirImagenes);
            switch(txtControlR.Text)
            {
                case ("Entrada"):
                    {
                        if (!Directory.Exists(dirImagenes))
                            Directory.CreateDirectory(dirImagenes);
                        string imagepathE = nuevoIngreso.Imageningreso;
                        if (!File.Exists(imagepathE))
                        {
                            foto_resultado.Image.Save(imagepathE, ImageFormat.Jpeg);
                            nuevoIngreso.cargarIngreso(); // Agregar fechaIngreso + imagenIngreso
                            MessageBox.Show("Entrada registrada!");
                        }
                        else
                        {
                            MessageBox.Show("Ya esta registrada su entrada");
                            return;
                        }
                    }
                    break;
                case ("Salida"):
                    {
                        if (nuevoIngreso.existeIngreso(int.Parse(txtDni.Text), hora))
                        {
                            if (!Directory.Exists(dirImagenes))
                                Directory.CreateDirectory(dirImagenes);
                            string imagepathS = nuevoIngreso.Imagenegreso;
                            if (!File.Exists(imagepathS))
                            {
                                foto_resultado.Image.Save(imagepathS, ImageFormat.Jpeg);
                                nuevoIngreso.cargarEgreso();
                                MessageBox.Show("Salida registrada!");
                            }
                            else
                                MessageBox.Show("Ya esta registrada su salida");
                        }
                        else
                        {
                            MessageBox.Show("No se ingreso en el dia", "Error", MessageBoxButtons.OK);
                        }
                    }
                    break;
            }
        }
    }
}
